Streaming media, such as video, audio, and live events, may be downloaded over a network, for example, the Internet, to a network device. Applications such as video on demand and Internet radio are two common examples of downloading streaming media over the Internet. (A network device is an electronic device such as a desktop computer, personal digital assistant, mobile or laptop computer, cellular or mobile telephone, etc., that is accessible by or over a network).
The streaming media content, e.g., music, typically is input and stored on one or more network devices commonly known as servers (“server”). The streaming media content is then downloaded to many network devices commonly known as clients (“clients”). In some instances, many thousands of clients connect to a given server and request downloading the streaming media content.
Examples of streaming media in a client-server network architecture, in which many clients directly connect to the server to download media, include the Media Pictures Experts Group (MPEG) Layer 3 audio streaming services provided by Nullsoft, Inc., available online at www.shoutcast.com, the audio, video and live events streaming services provided by RealNetworks, Inc., available online at www.realaudio.com, and a live events Webcast service provided by Akamai Technologies, Inc., available online at www.akamai.com. These streaming media services may be implemented using general purpose servers not necessarily optimized for such services.
The streaming media content may be referred to simply as a stream. One method for transmitting a stream over a network to multiple clients involves transmitting a unicast stream from a server to a network switch (“switch”), buffering the unicast stream at the switch, splitting that unicast stream at the switch into multiple unicast streams, and transmitting the multiple unicast streams to multiple clients, typically at the request of those clients.
In general, a switch is a network device that selects a path over which to transmit a unit of data to its next destination. According to the International Standards Organization (ISO) layered Open Systems Interconnection (OSI) communication model, a switch is usually associated with layer 2, the Data-Link Layer. However, switches also perform the routing functions of layer 3, the Network Layer. Layer 3 switches are also sometimes called Internet Protocol (IP) switches. More recently, switches perform routing functions based on layer 4, the Transport Layer, e.g., based on Transmission Control Protocol (TCP) information, which may even involve the switch establishing a Transport Layer connection with the source and/or ultimate destination of a stream.
It should be noted that the term unicast, or unicast communication, generally refers to a communication between a single sending network device (e.g., a server) and a single receiving network device (e.g., a switch or client) over a network. Unicast communication is in contrast to multicast communication between a single sender and multiple receivers. The term point-to-point communication is sometimes used to indicate unicast communication. The term stream, as used by itself hereinafter, refers to a single unicast stream, and the term streams refers to multiple unicast streams, unless specifically stated otherwise.
The stream, generally, and as contemplated herein, is divided into a number of data packets or frames, the number varying widely from a few packets to thousands or more depending on the type and length of content in the stream.
The packets may each be fixed length or variable length units of data of a certain number of bytes as may be required by the underlying communications media over, or communications protocols via, which the packets are transmitted. The network addresses of the sending network device and of the destination network device are added to each packet. The stream is unicast so that all packets in the stream are targeted to a single network device. This may be accomplished by using the same destination address in each packet of the stream that matches the unique address of the destination network device. This is in contrast to a stream that is multicast or broadcast, in which all packets in the stream are targeted to many network devices by using a well known destination address in each packet of the stream that is recognized by the many network devices.
What is needed is a network switch, and in particular, a network switch hardware architecture, that optimizes the transmission of a stream from a server to many clients. It is further desired that the network switch hardware architecture be highly scalable so as to be able to simultaneously receive many streams from multiple servers, identify and split, that is, replicate, an individual stream, and transmit the replicated streams to significant numbers of clients in real time, in response to requests from those clients.